package com.zwj.design.behavior.strategy.duck;

import com.zwj.design.behavior.strategy.behavior.FlyBehavior;
import com.zwj.design.behavior.strategy.behavior.QuackBehavior;
import lombok.Setter;

/**
 * 鸭子类
 *
 * @author 张文接
 * @version 1.0
 * @createTime 2024/3/14 22:04
 */
@Setter
public abstract class Duck {
    /**
     * 飞行行为
     */
    public FlyBehavior flyBehavior;
    /**
     * 叫声行为
     */
    public QuackBehavior quackBehavior;

    /**
     * 无参构造方法
     */
    public Duck() {
    }

    /**
     * 展示
     */
    public abstract void display();

    /**
     * 执行飞行的动作
     */
    public void performFly() {
        flyBehavior.fly();
    }

    /**
     * 执行发声的动作
     */
    public void performQuack() {
        quackBehavior.quack();
    }
}
